package com.grupobbva.seguridad.filter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.grupobbva.seguridad.client.domain.Usuario;
import com.grupobbva.seguridad.client.util.Constante;
import com.grupobbva.seguridad.service.SeguridadService;
import com.grupobbva.seguridad.util.Util;
import com.grupobbva.seguridad.web.servlet.action.BaseController;

public class ValidacionSessionFilter extends com.grupobbva.seguridad.client.filter.ValidacionSessionFilter {
	
	
	private static final Logger log=Logger.getLogger(ValidacionSessionFilter.class);
	
	protected void ejecutarLoginExito(HttpServletRequest request, HttpServletResponse response) {
		Usuario usuario = (Usuario) request.getSession().getAttribute(Constante.SESSION_USUARIO);

		String contexto  = (((HttpServletRequest) request).getRequestURI()).split("/")[1];
		
		ApplicationContext springcontext  = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession(false).getServletContext());
		SeguridadService seguridadService = (SeguridadService) springcontext.getBean("seguridadService");
		
		try {
	    	com.grupobbva.seguridad.domain.Usuario usuarioApp = seguridadService.validarUsuario(contexto, usuario.getUsuarioId());
	    	
	    	HttpSession session = request.getSession(true);
	    	session.setAttribute(com.grupobbva.seguridad.util.Constante.USUARIO, usuarioApp);
			
	    	request.getRequestDispatcher(Util.getRelativeURL(BaseController.getNavigationMain(usuarioApp))).forward(request,response);
		} catch (Exception e) {
			log.error(e.getMessage(),e);
		}
	}
	
	protected void ejecutarLoginError(HttpServletRequest request, HttpServletResponse response) {
		
	}
}